/*
Date:20210511
key:既是二分查找，却有三种情况，在numbers[mid]==numbers[j]时往左缩防止了前后相等的情况。
*/

class Solution {
public:
    int minArray(vector<int>& numbers) {

    int i,j;

    {

        i=0;
        j=numbers.size()-1;
        while(i<j)
        {
            int mid=(i+j)>>1;

            {
                if(numbers[mid]<numbers[j])
                {
                    j=mid;
                }
                else
                {
                    if(numbers[mid]>numbers[j])
                    {
                        i=mid+1;
                    }
                    //当numbers[mid]==numbers[j],动i可能去掉最小值
                    else{j--;}
                }
            }
        }
    }
    return  numbers[i];
    }
};